package main

import "fmt"

type Student struct {
	name   string
	age    int
	scores [5]float64
	ptr    *int
	slice  []int
	map1   map[string]string
}

func main() {
	//方式一
	var stu Student
	stu.name = "tom"
	fmt.Println(stu)

	//方式二
	var num = 100
	var stu2 = Student{"tom", 12, [5]float64{1, 2, 3, 4}, &num, make([]int, 10), make(map[string]string)}
	fmt.Println(stu2)

	//方式三
	var stu3 *Student = new(Student)
	//这种写法((*stu3).name = "smith")可以这样写 stu3 = "smith"
	//原因：go设计者，为了程序员使用方便，底层会对 stu3 = "smith" 进行处理
	stu3.name = "smith"
	fmt.Println(stu3)

	//使用方式四
	var stu4 *Student = &Student{}
	//这种写法((*stu4).name = "dahuang")可以这样写 stu3 = "dahuang"
	//原因：go设计者，为了程序员使用方便，底层会对 stu3 = "dahuang" 进行处理
	stu4.name = "dahuang"
	fmt.Println(stu4)
}
